/**
 * 用户相关服务
 */
const util = require('../utils/util.js');
const api = require('../config/api.js');

/**
 * Promise封装wx.checkSession
 */
function checkSession() {
  return new Promise(function(resolve, reject) {
    wx.checkSession({
      success: function() {
        resolve(true);
      },
      fail: function() {
        reject(false);
      }
    })
  });
}

/**
 * Promise封装wx.login
 */
function login() {
  return new Promise(function(resolve, reject) {
    wx.login({
      success: function(res) {
        if (res.code) {
          resolve(res);
        } else {
          reject(res);
        }
      },
      fail: function(err) {
        reject(err);
      }
    });
  });
}

/**
 * 调用微信登录
 */
function loginByWeixin(userInfo) {

  return new Promise(function(resolve, reject) {
    return login().then((res) => {
      // console.log(res);
      //连接远程服务器，判断是否有有该用户
      util.request(api.checkUser, {
        code: res.code
        // userInfo: userInfo
      }).then(res => {
        // console.log(res);
        if (res.state === 2000) {
          //存储用户信息
          wx.setStorageSync('userInfo', res.user);
          // wx.setStorageSync('token', res.data.token);
          console.log("在缓存中存储用户信息")
          resolve(res);
        } else if(res.state === 400) {
          console.log(userInfo);
          // 发送请求，在后台存储该用户信息
          util.request(api.addUser, {...userInfo,sessionKey: res.sessionKey,openId: res.wxOpenid}, 'POST').then(res=>{
            console.log(res);
            if(res.state === 2000) {
              //存储用户信息
              wx.setStorageSync('userInfo', res.user);
              // wx.setStorageSync('token', res.data.token);
              console.log("在缓存中存储用户信息")
              resolve(res);
            }
          })
          // reject(res);
        }
      }).catch((err) => {
        console.log("1")
        reject(err);
      });
    })
    // .catch((err) => {
    //   console.log(2)
    //   reject(err);
    // })
  });
}

/**
 * 判断用户是否登录
 */
function checkLogin() {
  return new Promise(function(resolve, reject) {
    if (wx.getStorageSync('userInfo')) {
      checkSession().then(() => {
        resolve(true);
      }).catch(() => {
        reject(false);
      });
    } else {
      reject(false);
    }
  });
}

module.exports = {
  loginByWeixin,
  checkLogin,
};